<?php
class MgDocumentosController extends AppController {

	var $name = 'MgDocumentos';
	var $helpers = array('Html', 'Form','Javascript');
	var $uses = array('MgDocumento','MgAgente');
	var $paginate = array('MgDocumento'=>array('limit' => 25, 'order' => array('MgDocumento.id' => 'desc')));

	function index() {
		$this->MgDocumento->recursive = 0;
		$this->set('mgDocumentos', $this->paginate());
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalido Documento.', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->set('mgDocumenmto', $this->MgDocumento->read(null, $id));
	}

	function add() {
		if (!empty($this->data)) {
			$this->MgDocumento->create();
			$this->data['MgDocumento']['fecha_referencia'] = date('Y-m-d', strtotime($this->data['MgDocumento']['fecha_referencia']));
			if ($this->MgDocumento->save($this->data)) {
				$this->Session->setFlash(__('El Documento ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Documento no pudo guardarse. Por favor, intente de nuevo.', true));
			}
		}
		$mgAgentes = $this->MgDocumento->MgAgente->find('list', array('fields'=>array('descripcion'), 'order'=>'id'));
		$this->set(compact('mgAgentes'));
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalido Documento', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
			if ($this->MgDocumento->save($this->data)) {
				$this->Session->setFlash(__('El Documento ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Documento no pudo guardarse. Por favor, intente de nuevo.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->MgDocumento->read(null, $id);
		}
		$mgAgentes = $this->MgDocumento->MgAgente->find('list', array('fields'=>array('descripcion'), 'order'=>'id'));
		$this->set(compact('mgAgentes'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalido id para Documento', true));
			$this->redirect(array('action'=>'index'));
		}
		$doc = $this->MgDocumento->findById($id);
		if($doc['MgDocumento']['suma'] == 0) {
			if ($this->MgDocumento->delete($id)) {
				$this->Session->setFlash(__('Documento borrado', true));
				$this->redirect(array('action'=>'index'));
			}
		} else {
			$this->Session->setFlash(__('Este documento ya tiene movimientos, no se puede borrar.', true));
			$this->redirect(array('action'=>'index'));
		}

	}
	function buscaDocumento()
	{
		Configure::write('debug', '3');  //set debug to 0 for this function because debugging info breaks the XMLHttpRequest
		$this->layout = "ajax"; //this tells the controller to use the Ajax layout instead of the default layout (since we're using ajax . . .)
		$fields_array = array();
		$campos = array();
		$limit = 12;
		$page = 1;
		$documentoA = array();
		if(!empty($_POST['limit']))
		$limit = $_POST['limit'];
		if(!empty($_POST['start']))
		$page = ($_POST['start']/$limit)+1;
		if(!empty($_POST['query']))
		$query = $_POST['query'];
		else
			$query = '';
		if(!empty($_POST['fields']))
		{	$fields = $_POST['fields'];
		//--------Genera los campos que se utilizaran para el filtrado----------//
		$fields=str_replace('[','',$fields);
		$fields=str_replace(']','',$fields);
		$fields=str_replace('"','',$fields);
		$fields=str_replace('\\','',$fields);
		$fields=str_replace('-','.',$fields);
		//$query = '817';
		$campos=explode(',',$fields);
		foreach ($campos as $campo)
		{

			$conditions[$campo.' LIKE']= '%'.strtoupper($query).'%';
		}
		$conditions['MgDocumento.codigo_referencia LIKE']= strtoupper($query).'%';
		}


		$fields_array= array('MgDocumento.id','MgDocumento.codigo_referencia',
							 'MgDocumento.mg_agente_id','MgDocumento.adicionado_por',
							 'MgDocumento.cantidad_facturas','MgDocumento.modificado_por',
							 'MgDocumento.modified','MgDocumento.valor','MgDocumento.suma',
							 'MgDocumento.created','MgDocumento.fecha_referencia',
							 'MgAgente.descripcion'
							 );
							 if (!empty($query) && $query<>'')
							 {
							 	$count = $this->MgDocumento->find('count',
							 	array('conditions'=>array('OR'=> $conditions)));
							 	$documentoA=$this->MgDocumento->find('all',
							 	array('conditions'=>array('OR'=> $conditions),
										   		 'fields'=>$fields_array,
										   		 'limit' => $limit,
										   		 'page'=> $page,
										   		 'order'=>'MgDocumento.created DESC','MgDocumento.cantidad_facturas- MgDocumentos.suma DESC'));		           		
							 }
							 else
							 {
							 	$count = $this->MgDocumento->find('count');
							 	$documentoA = $this->MgDocumento->find('all',
							 	array(	        'fields'=>$fields_array,
												'limit'=>$limit,
												'page'=>$page,
        										'order'=>'MgDocumento.created DESC','MgDocumento.cantidad_facturas- MgDocumentos.suma DESC'));			           		
							 }
							 	
							 $Arrays1 = array();
							 $Arrays = array();

							 foreach ($documentoA as $k => $v)
							 {
							 	foreach ($v as $k1 => $v1)
							 	{
							 		foreach ($v1 as $k2 => $v2)
							 		{
							 			$Arrays1[$k1.'-'.$k2] = $v2;
							 		}
							 	}
							 	$Arrays1['action1']='icon-cancel';
							 	$Arrays1['qtip1']='Eliminar Documento';

							 	$Arrays[] = $Arrays1;
							 }
							 $documentoArray = $Arrays;
							 if (empty($count))
							 {
							 	$count = 0;
							 }
							 $this->set('total', $count);
							 $this->set('documentos',$documentoArray);
	}

	function combobox($tipo=null,$modelo=null, $campo=null)
	{
		Configure::write('debug', '0');
		$this->layout = "ajax";
		if(!empty($_POST['query']))
		$query = $_POST['query'];
		if ($tipo==1)
		{
			if (!empty($query) && $query<>'')
			{
				$count = $this->$modelo->find('count',
				array('conditions'=>array($modelo.'.'.$campo.' LIKE'=>strtoupper($query).'%')));
				$datos = $this->$modelo->find('all',
				array('fields'=>array('id', $campo),
        										'conditions'=>array($modelo.'.'.$campo.' LIKE'=>strtoupper($query).'%')));												 
			}
			else
			{
				$count = $this->$modelo->find('count');
				$datos = $this->$modelo->find('all',
				array('fields'=>array('id', $campo)));
			}
		}
		else
		{
			if (!empty($query) && $query<>'')
			{
				$count = $this->$modelo->find('count',
				array('conditions'=>array($modelo.'.id LIKE'=>strtoupper($query).'%')));
				$datos = $this->$modelo->find('all',
				array('fields'=>array('id', 'primer_nombre','segundo_nombre','primer_apellido','segundo_apellido'),
        											  'conditions'=>array($modelo.'.id LIKE'=>strtoupper($query).'%'),
        											  'limit'=>'10'));												 
			}
			else
			{
				$count = $this->$modelo->find('count');
				$datos = $this->$modelo->find('all',
				array('fields'=>array('id', 'primer_nombre','segundo_nombre','primer_apellido','segundo_apellido'),
        										'limit'=>'10'));											 
			}
		}
		$datosA = Set::extract($datos, '{n}.'.$modelo);
		$this->set('total', $count);
		$this->set('datos',$datosA);
	}

	function comboboxExt($tipo=null,$modelo=null, $condition=null)
	{
		Configure::write('debug', '3');
		$this->layout = "ajax";
		if(!empty($_POST['query']))
		$query = $_POST['query'];
		if ($tipo==1)
		{
			if (!empty($query) && $query<>'')
			{
				$count = $this->$modelo->find('count',
				array('conditions'=>array($modelo.'.descripcion LIKE'=>strtoupper($query).'%')));
				$datos = $this->$modelo->find('all',
				array('fields'=>array('id', 'descripcion'),
        										'conditions'=>array($modelo.'.descripcion LIKE'=>strtoupper($query).'%')));												 
			}
			else
			{
				$count = $this->$modelo->find('count');
				$datos = $this->$modelo->find('all',
				array('fields'=>array('id', 'descripcion')));
			}
		}
		else
		{
			if (!empty($query) && $query<>'')
			{
				$count = $this->$modelo->find('count',
				array('conditions'=>array($modelo.'.id LIKE'=>strtoupper($query).'%')));
				$datos = $this->$modelo->find('all',
				array('fields'=>array('id', 'primer_nombre','segundo_nombre','primer_apellido','segundo_apellido'),
        											  'conditions'=>array($modelo.'.id LIKE'=>strtoupper($query).'%'),
        											  'limit'=>'10'));												 
			}
			else
			{
				$count = $this->$modelo->find('count');
				$datos = $this->$modelo->find('all',
				array('fields'=>array('id', 'primer_nombre','segundo_nombre','primer_apellido','segundo_apellido'),
        										'limit'=>'10'));											 
			}
		}
		$datosA = Set::extract($datos, '{n}.'.$modelo);
		$this->set('total', $count);
		$this->set('datos',$datosA);
	}

	function insertarExt()
	{
		Configure::write('debug', '0');
		$this->layout = 'ajax';
		if(!empty($this->data)){
			$this->MgDocumento->create();
			$this->data['MgDocumento']['adicionado_por'] =$this->Session->read('Auth.MgUsuario.usuario');
			//-------------------------------------------------------------//
			if($this->MgDocumento->save($this->data)){
				$response = array(
   		     		'success' => true,
		     		'errors' => $this->validateErrors($this->MgDocumento)
				);
			}
			else {
				$Erros = array();
				foreach ($this->validateErrors($this->MgDocumento) as $key => $value)
				{
					$Erros['data[MgDocumento]['.$key.']'] = $value;
				}

				$response = array(
   		     	'success' => false,
		     	'errors' =>$Erros,// $this->validateErrors($this->MgDocumento)
				);
			}
		}
		$this->set('response',$response);
	}
}
?>